定期ミートアップ 第41回
BiwaScheme R7RSライブラリシステム
r7expander
各識別子にプレフィックスを付けて衝突しないようにする
ライブラリシステム未対応の処理系で動くコードになる
例
code:scm
; counter.scm
(define-library (counter)
(import (scheme base))
(export get-count inc-count)
(begin
(define ct 0)
(define (get-count) ct)
(define (inc-count) (set! ct (+ ct 1)))))
; main.scm
(import (scheme base) (counter))
(inc-count)
(get-count)
code:scm
(define counter:ct 0)
(define (counter:get-count) counter:ct))
(define (counter:inc-count) (set! counter:ct (+ counter:ct 1)))
(counter:inc-count)
(counter:get-count)
Shiika ランタイム
今はカレントディレクトリからbuiltin/builtin.bcを探している
別ディレクトリの.skを動かしたいときに困る
runner.rsからの相対パスで探す?
cargo installでインストールしたときに困る
cargo install shiika → ~/.cargo/bin/shiika
Shiika Randomクラス
とりあえず整数と小数くらいが出せれば
シード値は指定したい
デフォルトでは指定したくない
securerandomとは?